home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / winview / winview.bas < prev    next >
Encoding:
BASIC Source File  |  1999-09-15  |  13.9 KB  |  410 lines

  1. Attribute VB_Name = "WINVIEW1"
  2. Option Explicit
  3. '-------------------------------------------------------
  4. '           Application global contstants
  5. '-------------------------------------------------------
  6. '-------------------------------------------------------
  7. '           API type definitions
  8. '-------------------------------------------------------
  9. Type POINTAPI
  10.     x As Long
  11.     y As Long
  12. End Type
  13.  
  14. Type RECT
  15.     Left As Long
  16.     Top As Long
  17.     Right As Long
  18.     Bottom As Long
  19. End Type
  20.  
  21. Public Type OSVERSIONINFO
  22.     dwOSVersionInfoSize As Long
  23.     dwMajorVersion As Long
  24.     dwMinorVersion As Long
  25.     dwBuildNumber As Long
  26.     dwPlatformId As Long
  27.     szCSDVersion As String * 128
  28. End Type
  29.  
  30. '-------------------------------------------------------
  31. '           API constants
  32. '-------------------------------------------------------
  33.  
  34. Public Const LVM_FIRST = &H1000
  35. Public Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54
  36. Public Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55
  37. Public Const LVM_GETHEADER = (LVM_FIRST + 31)
  38.  
  39. Public Const LVS_EX_FULLROWSELECT = &H20
  40. Public Const LVS_EX_GRIDLINES = &H1
  41. Public Const LVS_EX_HEADERDRAGDROP = &H10
  42. Public Const LVS_EX_TRACKSELECT = &H8
  43. Public Const LVS_EX_ONECLICKACTIVATE = &H40
  44. Public Const LVS_EX_TWOCLICKACTIVATE = &H80
  45.  
  46. ' Straight port to Win32. The old GWW and GCW constants are gone
  47. Public Const GWL_WNDPROC = (-4)
  48. Public Const GWL_HINSTANCE As Long = (-6)
  49. Public Const GWL_HWNDPARENT = (-8)
  50. Public Const GWL_STYLE = (-16)
  51. Public Const GWL_EXSTYLE = (-20)
  52. Public Const GWL_USERDATA = (-21)
  53. Public Const GWL_ID = (-12)
  54.  
  55. Public Const GCL_MENUNAME = (-8)
  56. Public Const GCL_HBRBACKGROUND = (-10)
  57. Public Const GCL_HCURSOR = (-12)
  58. Public Const GCL_HICON = (-14)
  59. Public Const GCL_HMODULE = (-16)
  60.  
  61. Public Const GCL_CBWNDEXTRA As Long = -18&
  62. Public Const GCL_CBCLSEXTRA As Long = -20&
  63. Public Const GCL_STYLE As Long = -26&
  64.  
  65. Public Const GCL_WNDPROC = (-24)
  66.  
  67. Public Const GCW_ATOM = (-32)
  68.  
  69.  
  70. ' Style constants
  71. Public Const WS_OVERLAPPED  As Long = &H0&
  72. Public Const WS_TABSTOP     As Long = &H10000
  73. Public Const WS_MAXIMIZEBOX As Long = &H10000
  74. Public Const WS_GROUP       As Long = &H20000
  75. Public Const WS_MINIMIZEBOX As Long = &H20000
  76. Public Const WS_THICKFRAME  As Long = &H40000
  77. Public Const WS_SYSMENU     As Long = &H80000
  78. Public Const WS_HSCROLL     As Long = &H100000
  79. Public Const WS_VSCROLL     As Long = &H200000
  80. Public Const WS_DLGFRAME    As Long = &H400000
  81. Public Const WS_BORDER      As Long = &H800000
  82. Public Const WS_CAPTION     As Long = &HC00000  '  WS_BORDER Or WS_DLGFRAME
  83. Public Const WS_MAXIMIZE    As Long = &H1000000
  84. Public Const WS_CLIPCHILDREN As Long = &H2000000
  85. Public Const WS_CLIPSIBLINGS As Long = &H4000000
  86. Public Const WS_DISABLED    As Long = &H8000000
  87. Public Const WS_VISIBLE     As Long = &H10000000
  88. Public Const WS_MINIMIZE    As Long = &H20000000
  89. Public Const WS_CHILD       As Long = &H40000000
  90. Public Const WS_POPUP       As Long = &H80000000
  91.  
  92.  
  93. Public Const CS_VREDRAW         As Long = &H1&
  94. Public Const CS_HREDRAW         As Long = &H2&
  95. Public Const CS_KEYCVTWINDOW    As Long = &H4&
  96. Public Const CS_DBLCLKS         As Long = &H8&
  97. Public Const CS_OWNDC           As Long = &H20&
  98. Public Const CS_CLASSDC         As Long = &H40&
  99. Public Const CS_PARENTDC        As Long = &H80&
  100. Public Const CS_NOKEYCVT        As Long = &H100&
  101. Public Const CS_NOCLOSE         As Long = &H200&
  102. Public Const CS_SAVEBITS        As Long = &H800&
  103. Public Const CS_BYTEALIGNCLIENT As Long = &H1000&
  104. Public Const CS_BYTEALIGNWINDOW As Long = &H2000&
  105. Public Const CS_PUBLICCLASS     As Long = &H4000&
  106.  
  107. Public Const GW_HWNDFIRST = 0
  108. Public Const GW_HWNDLAST = 1
  109.  
  110. Public Const GW_HWNDNEXT As Long = 2&
  111.  
  112. Public Const GW_HWNDPREV = 3
  113. Public Const GW_OWNER = 4
  114.  
  115. Public Const GW_CHILD As Long = 5&
  116.  
  117. Public Const GW_MAX = 5
  118.  
  119.  
  120. Public Const ES_LEFT = &H0&
  121. Public Const ES_CENTER = &H1&
  122. Public Const ES_RIGHT = &H2&
  123. Public Const ES_MULTILINE = &H4&
  124. Public Const ES_UPPERCASE = &H8&
  125. Public Const ES_LOWERCASE = &H10&
  126. Public Const ES_PASSWORD = &H20&
  127. Public Const ES_AUTOVSCROLL = &H40&
  128. Public Const ES_AUTOHSCROLL = &H80&
  129. Public Const ES_NOHIDESEL = &H100&
  130. Public Const ES_OEMCONVERT = &H400&
  131. Public Const ES_READONLY = &H800&
  132. Public Const ES_WANTRETURN = &H1000&
  133.  
  134. Public Const BS_PUSHBUTTON = &H0&
  135. Public Const BS_DEFPUSHBUTTON = &H1&
  136. Public Const BS_CHECKBOX = &H2&
  137. Public Const BS_AUTOCHECKBOX = &H3&
  138. Public Const BS_RADIOBUTTON = &H4&
  139. Public Const BS_3STATE = &H5&
  140. Public Const BS_AUTO3STATE = &H6&
  141. Public Const BS_GROUPBOX = &H7&
  142. Public Const BS_USERBUTTON = &H8&
  143. Public Const BS_AUTORADIOBUTTON = &H9&
  144. Public Const BS_OWNERDRAW = &HB&
  145. Public Const BS_LEFTTEXT = &H20&
  146. ' New button styles for Windows 95
  147. Public Const BS_TEXT = 0&
  148. Public Const BS_ICON = &H40&
  149. Public Const BS_BITMAP = &H80&
  150. Public Const BS_LEFT = &H100&
  151. Public Const BS_RIGHT = &H200&
  152. Public Const BS_CENTER = &H300&
  153. Public Const BS_TOP = &H400&
  154. Public Const BS_BOTTOM = &H800&
  155. Public Const BS_VCENTER = &HC00&
  156. Public Const BS_PUSHLIKE = &H1000&
  157. Public Const BS_MULTILINE = &H2000&
  158. Public Const BS_NOTIFY = &H4000&
  159. Public Const BS_FLAT = &H8000&
  160. Public Const BS_RIGHTBUTTON = &H20&
  161.  
  162. Public Const SS_LEFT = &H0&
  163. Public Const SS_CENTER = &H1&
  164. Public Const SS_RIGHT = &H2&
  165. Public Const SS_ICON = &H3&
  166. Public Const SS_BLACKRECT = &H4&
  167. Public Const SS_GRAYRECT = &H5&
  168. Public Const SS_WHITERECT = &H6&
  169. Public Const SS_BLACKFRAME = &H7&
  170. Public Const SS_GRAYFRAME = &H8&
  171. Public Const SS_WHITEFRAME = &H9&
  172. Public Const SS_USERITEM = &HA&
  173. Public Const SS_SIMPLE = &HB&
  174. Public Const SS_LEFTNOWORDWRAP = &HC&
  175. Public Const SS_NOPREFIX = &H80           '  Don't do "&" character translation
  176.  
  177. Public Const DS_ABSALIGN = &H1&
  178. Public Const DS_SYSMODAL = &H2&
  179. Public Const DS_LOCALEDIT = &H20
  180. Public Const DS_SETFONT = &H40
  181. Public Const DS_MODALFRAME = &H80
  182. Public Const DS_NOIDLEMSG = &H100
  183. Public Const DS_SETFOREGROUND = &H200
  184.  
  185.  
  186. Global Const WM_USER = &H400
  187.  
  188. ' Watch out here - control message numbers have changed!
  189. Public Const LB_RESETCONTENT = &H184
  190. Public Const LB_SETTABSTOPS = &H192
  191.  
  192. Public Const LBS_NOTIFY = &H1&
  193. Public Const LBS_SORT = &H2&
  194. Public Const LBS_NOREDRAW = &H4&
  195. Public Const LBS_MULTIPLESEL = &H8&
  196. Public Const LBS_OWNERDRAWFIXED = &H10&
  197. Public Const LBS_OWNERDRAWVARIABLE = &H20&
  198. Public Const LBS_HASSTRINGS = &H40&
  199. Public Const LBS_USETABSTOPS = &H80&
  200. Public Const LBS_NOINTEGRALHEIGHT = &H100&
  201. Public Const LBS_MULTICOLUMN = &H200&
  202. Public Const LBS_WANTKEYBOARDINPUT = &H400&
  203. Public Const LBS_EXTENDEDSEL = &H800&
  204. Public Const LBS_DISABLENOSCROLL = &H1000&
  205. Public Const LBS_NODATA = &H2000&
  206.  
  207. Public Const CBS_SIMPLE = &H1&
  208. Public Const CBS_DROPDOWN = &H2&
  209. Public Const CBS_DROPDOWNLIST = &H3&
  210. Public Const CBS_OWNERDRAWFIXED = &H10&
  211. Public Const CBS_OWNERDRAWVARIABLE = &H20&
  212. Public Const CBS_AUTOHSCROLL = &H40&
  213. Public Const CBS_OEMCONVERT = &H80&
  214. Public Const CBS_SORT = &H100&
  215. Public Const CBS_HASSTRINGS = &H200&
  216. Public Const CBS_NOINTEGRALHEIGHT = &H400&
  217. Public Const CBS_DISABLENOSCROLL = &H800&
  218.  
  219. Public Const SBS_HORZ = &H0&
  220. Public Const SBS_VERT = &H1&
  221. Public Const SBS_TOPALIGN = &H2&
  222. Public Const SBS_LEFTALIGN = &H2&
  223. Public Const SBS_BOTTOMALIGN = &H4&
  224. Public Const SBS_RIGHTALIGN = &H4&
  225. Public Const SBS_SIZEBOXTOPLEFTALIGN = &H2&
  226. Public Const SBS_SIZEBOXBOTTOMRIGHTALIGN = &H4&
  227. Public Const SBS_SIZEBOX = &H8&
  228.  
  229. Public Declare Function GetVersionEx Lib "kernel32.dll" _
  230.                     Alias "GetVersionExA" _
  231.                     (lpVerInfo As OSVERSIONINFO) As Long
  232.  
  233. Public Declare Function IsWindowVisible Lib "user32.dll" _
  234.                     (ByVal hWnd As Long) As Long
  235.  
  236. Public Declare Function IsWindowEnabled Lib "user32.dll" _
  237.                     (ByVal hWnd As Long) As Long
  238.                     
  239. Public Declare Function IsZoomed Lib "user32.dll" _
  240.                     (ByVal hWnd As Long) As Long
  241.  
  242. Public Declare Function IsIconic Lib "user32.dll" _
  243.                     (ByVal hWnd As Long) As Long
  244.                     
  245. Public Declare Function GetClientRect Lib "user32.dll" _
  246.                     (ByVal hWnd As Long, lpRect As RECT) As Long
  247.  
  248. Public Declare Function GetWindowRect Lib "user32.dll" _
  249.                     (ByVal hWnd As Long, lpRect As RECT) As Long
  250.  
  251. Public Declare Function ClientToScreen Lib "user32.dll" _
  252.                     (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
  253.  
  254. Public Declare Function EnumWindows Lib "user32.dll" _
  255.                     (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
  256.                     
  257. Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam&) As Long
  258.  
  259. Public Declare Function FlashWindow Lib "user32.dll" _
  260.                     (ByVal hWnd As Long, ByVal bInvert As Long) As Long
  261.  
  262. Public Declare Function GetCapture Lib "user32.dll" () As Long
  263.  
  264. Public Declare Function GetClassLong Lib "user32.dll" _
  265.                     Alias "GetClassLongA" _
  266.                     (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  267.                     
  268. Public Declare Function GetClassName Lib "user32.dll" _
  269.                     Alias "GetClassNameA" _
  270.                     (ByVal hWnd As Long, ByVal lpClassName As String, _
  271.                      ByVal nMaxCount As Long) As Long
  272.                      
  273. Declare Function GetCurrentProcessId Lib "kernel32" () As Long
  274.  
  275. Public Declare Function GetDesktopWindow Lib "user32.dll" () As Long
  276.  
  277. Public Declare Function GetModuleFileName Lib "kernel32.dll" _
  278.                     Alias "GetModuleFileNameA" _
  279.                     (ByVal hModule As Long, ByVal lpFileName As String, _
  280.                      ByVal nSize As Long) As Long
  281.  
  282. Public Declare Function GetParent Lib "user32.dll" _
  283.                     (ByVal hWnd As Long) As Long
  284.                     
  285. Public Declare Function GetWindow Lib "user32.dll" _
  286.                     (ByVal hWnd As Long, ByVal wCmd As Long) As Long
  287.  
  288. Public Declare Function GetWindowLong Lib "user32.dll" _
  289.                     Alias "GetWindowLongA" _
  290.                     (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  291.                     
  292. Public Declare Function GetWindowThreadProcessId Lib "user32.dll" _
  293.                     (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  294.             
  295. Public Declare Function ReleaseCapture Lib "user32.dll" () As Long
  296.  
  297. ' We create a special SendMessage alias that accepts a long value by reference
  298. Public Declare Function SendMessageLongByRef Lib "user32.dll" Alias "SendMessageA" _
  299.                     (ByVal hWnd As Long, ByVal wMsg As Long, _
  300.                      ByVal wParam As Integer, lParam As Long) As Long
  301.              
  302. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
  303.  
  304. Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  305.  
  306. Public Declare Function SetCapture Lib "user32.dll" _
  307.                     (ByVal hWnd As Long) As Long
  308.                     
  309. Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  310.  
  311. Public Declare Function WindowFromPoint Lib "user32.dll" _
  312.                     (ByVal x As Long, ByVal y As Long) As Long
  313.  
  314. Public Declare Function GetWindowText Lib "user32.dll" _
  315.                     Alias "GetWindowTextA" _
  316.                     (ByVal hWnd As Long, ByVal lpString As String, _
  317.                      ByVal cch As Long) As Long
  318.  
  319.  
  320.  
  321. '   lpData was passed by the EnumWindows call and contains
  322. '   the parent window handle that we are looking for.
  323. Public Function Callback1_EnumWindows(ByVal vhWnd As Long, _
  324.                     ByVal lpData As Long) As Long
  325.     ' If hWnd is owned by window in lpData,
  326.     ' Add it to the listbox
  327.     If GetParent(vhWnd) = lpData Then
  328.         AddToList Winview.GetWindowDesc(vhWnd)
  329.     End If
  330.     Callback1_EnumWindows = 1  ' Continue enumeration
  331. End Function
  332.  
  333. Public Function LPSTRToStr(ByVal vsSrc As String) As String
  334.     If InStr(vsSrc, vbNullChar) <> 0 Then
  335.         vsSrc = Left$(vsSrc, InStr(vsSrc, vbNullChar) - 1)
  336.     End If
  337.     
  338.     LPSTRToStr = Trim$(vsSrc)
  339. End Function
  340.  
  341. Public Function IsNT() As Boolean
  342.     Const WIN_NT = 2
  343.     Dim vInfo As OSVERSIONINFO
  344.     Dim lRet As Long
  345.     
  346.     vInfo.dwOSVersionInfoSize = Len(vInfo)
  347.     lRet = GetVersionEx(vInfo)
  348.     If vInfo.dwPlatformId = WIN_NT Then
  349.         IsNT = True
  350.     Else
  351.         IsNT = False
  352.     End If
  353. End Function
  354.  
  355. Public Function sGetToken(ByRef rsLn As String, _
  356.         vsDelim As String) As String
  357.     Dim iDelim As Integer
  358.     Dim sToken As String
  359.     
  360.     On Error GoTo GetTokenError
  361.  
  362.     rsLn = Trim$(rsLn)
  363.     iDelim = InStr(1, rsLn, vsDelim)
  364.  
  365.     If iDelim <> 0 Then
  366.         sToken = Trim$(Mid$(rsLn, 1, iDelim - 1))
  367.         rsLn = Trim$(Mid$(rsLn, iDelim + 1))
  368.     Else
  369.         sToken = Trim$(rsLn)
  370.         rsLn = ""
  371.     End If
  372.  
  373.     sGetToken = sToken
  374.  
  375. GetTokenExit:
  376.     Exit Function
  377.  
  378. GetTokenError:
  379.     Resume GetTokenExit
  380. End Function
  381.  
  382. Public Sub AddToList(ByVal vsTabSepStr As String)
  383.     Dim NewItem As ListItem
  384.     
  385.     Set NewItem = Winview.lvwWindows.ListItems.Add(, , sGetToken(vsTabSepStr, vbTab))
  386.     With NewItem
  387.         .SubItems(1) = sGetToken(vsTabSepStr, vbTab)
  388.         .SubItems(2) = sGetToken(vsTabSepStr, vbTab)
  389.         .SubItems(3) = sGetToken(vsTabSepStr, vbTab)
  390.     End With
  391.     Set NewItem = Nothing
  392. End Sub
  393.  
  394. Sub SetListviewStyle(CtlHwnd As Long, Style As Long, AddStyle As Boolean)
  395.     Dim CurStyle As Long
  396.     Dim lRet As Long
  397.     
  398.     CurStyle = SendMessageLong(CtlHwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0&, 0&)
  399.     
  400.     If AddStyle Then
  401.         CurStyle = CurStyle Or Style
  402.     Else
  403.         CurStyle = CurStyle And Not Style
  404.     End If
  405.     
  406.     lRet = SendMessageLong(CtlHwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, CurStyle)
  407. End Sub
  408.  
  409.  
  410.